class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        //滑动窗口技巧:滑动窗口是个set，滑动：擦除左界，判断右界是否在窗口，在则true，不在则加入窗口（窗口右移）
        set<int> s;
        for(int i=0;i<nums.size();i++){
            
           
            if (i>k){ //已经全部插入[0,k] 最大间距是k  而不是[0,k-1]
                s.erase(nums[i-k-1]);
            }
            if (s.count(nums[i])!=0){//nums[i]在，true
                return true;
            }
            
            //先加入[0,k-1]这k个元素  || nums[i]不在，插入窗口
            s.insert(nums[i]);
        }
        return false;
    }
};